package 简单.贪心思想;

/**
 * 有 n 个筹码。第 i 个筹码的位置是 position[i] 。
 * 我们需要把所有筹码移到同一个位置。在一步中，我们可以将第 i 个筹码的位置从 position[i] 改变为:
 * position[i] + 2 或 position[i] - 2 ，此时 cost = 0
 * position[i] + 1 或 position[i] - 1 ，此时 cost = 1
 * 返回将所有筹码移动到同一位置上所需要的 最小代价 。
 * <p>
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode.cn/problems/minimum-cost-to-move-chips-to-the-same-position
 */
public class 玩筹码_1217 {

    public static void main(String[] args) {

    }

    /**
     * 贪心思想
     * 移动两个位置不需要代价，优先移动两格
     * 将奇数位筹码全部移到一个位置上
     * 将偶数位筹码全部移到一个位置上
     * 取较小的筹码
     *
     * @param position
     * @return
     */
    public int minCostToMoveChips(int[] position) {
        int ji = 0, ou = 0;
        // 注意: 第 i 个筹码的位置是 position[i]，每个索引位置只有一个筹码
        for (int i = 0; i < position.length; i++) {
            if (position[i] % 2 == 0) {
                ou++;
            } else {
                ji++;
            }
        }
        return Math.min(ji, ou);
    }

}
